package com.songlanyun.modules.marketing.groupbuy.model.vo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.songlanyun.common.drive.ValueObject;
import com.songlanyun.common.enums.MarketingConstant;
import com.songlanyun.common.enums.OrderConstant;
import com.songlanyun.modules.marketing.groupbuy.entity.GroupBuyGoodsSku;
import com.songlanyun.modules.order.entity.ChildOrder;
import com.songlanyun.modules.order.service.ChildOrderService;
import com.songlanyun.modules.rabbitmq.util.SpringContextUtil;
import lombok.Data;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 拼团订单Vo
 *
 * @author Mark
 * @email sunlightcs@gmail.com
 * @date 2020-11-23 17:30:11
 */
@Data
public class GroupBuyOrderSlimVO implements ValueObject {

    private Long id;
    /**
     * 所属商家
     */
    private Long shopId;

    /**
     * 所属店铺名称
     */
    private String shopName;
    /**
     * 拼团活动id
     */
    private Long groupBuyId;
    /**
     * 拼团活动商品id
     */
    private Long groupBuyGoodsId;
    /**
     * 组团id
     */

    private Long buyTeamId;

    /**
     * 所属商品id
     */
    private Long goodsId;
    /**
     * 商品标题
     */
    private String goodsTitle;
    /**
     * 商品短标题
     */
    private String shortGoodsTitle;

    /**
     * 商品图片
     */
    private String goodsImg;

    /**
     * 规格的Hash编码，方便去对应和查找
     */
    private String skuHashCode;
    /**
     * 规格集的文本显示值
     */
    private String skuSetName;

    /**
     * 单品标识
     */
    private Long singleGoodsId;

    /**
     * 购买商品规格数量
     */
    private Integer number;

    /**
     * 实际价格(会员打折或秒杀的实际价格或活动价)
     */
    private BigDecimal realPrice;

    /**
     * 总实际价格
     */
    private BigDecimal totalRealPrice;

    /**
     * 总优惠
     */
    private BigDecimal totalReduced;

    /**
     * 真实的物流费用
     */
    private BigDecimal realFreight;

    /**
     * 总费用(包含运费)
     */
    private BigDecimal totalAmount;
    /**
     * 会员id
     */
    private Long userId;

    private String mobile;

    private String nickname;

    private Integer gender;

    /**
     * true,团长，false 成员
     */
    private Boolean leader;
    /**
     * 订单id
     */
    private Long orderId;

    /**
     * 支付单id
     */
    private Long payOrderId;
    /**
     * 子订单id
     */
    private Long childOrderId;

    /**
     * 订单编号
     */
    private String orderCode;
    /**
     * 下单时间
     */
    private Date joinTime;
    /**
     * 支付时间（支付时间没支付时是null）
     */
    private Date payTime;
    /**
     * 支付过期时间
     */
    private Long payExpireTime;
    /**
     * 0未支付，4支付失败,5已支付成功
     */
    private OrderConstant.PaymentStatus payStatus;
    /**
     * 参团成功状态
     */
    private Boolean joinStatus;
    /**
     * 订单的维权状态（0没有，1维权中，2完成,3失败）
     */
    private OrderConstant.RightsStatus rightsStatus;
    /**
     * 0没有维权，1团过期自动维权退款，2成团后的会员维权
     */
    private OrderConstant.MemberRightsType memberRightsType;
    /**
     * 参团时间
     */
    private Date createTime;


    /**
     * 成团小时数
     */
    @NotNull(message = "成团小时数不能为空")
    private Integer limitTime;

    /**
     * 团长支付成功的开团时间
     */
    private Long startTime;
    /**
     * 团长支付成功的开团后的最终结束时间
     */
    private Long endTime;
    /**
     * 成团时间（所有成员到位，所有订单可以开始发货）
     */
    private Date completeTime;
    /**
     * 0建团中（团长还没有支付），1建团成功，成团中（团长支付完成），2组团完成，3建团失败（团长未支付）4组团失败（时间到了人员不足）
     */
    private OrderConstant.TeamStatus status;
    /**
     * 拼团人数
     */
    private Integer groupPeopleNum;

    private List<TeamMemberUserInfoVO> memberInfos;

    public Long getNowMillis(){
        return System.currentTimeMillis();
    }


}
